import Vue from 'vue'
import App from './App.vue'
import axios from 'axios';
Vue.prototype.$axios = axios;
// axios.defaults.baseURL = '/list';

import router from './router';
import store from "./store/store.js"
import "./rem.js"
import './views/font/font_4401381_husfxjnpb0m/iconfont.css'



// import echarts from 'echarts'
// Vue.prototype.$echarts = echarts
// import Vuex from 'vuex'
import ElementUI from 'element-ui';
// 告诉 vue “使用” vuex
// Vue.use(Vuex)
import 'element-ui/lib/theme-chalk/index.css'
import {
	baseurl
} from './store/store.js';
Vue.prototype.baseurl = baseurl
// 使用element UI
Vue.use(ElementUI);
Vue.config.productionTip = false

// Vue.prototype.$store = global
Vue.prototype.store = store

router.beforeEach((to, from, next) => {
	if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
		//如果需要就执行下面的代码
		// 通过sessionStorage 获取当前的isLogin的值 将我们保存的isLogin的值赋给num,num是顺便取的名称，可以换
		//我们在登录界面，我们使用请求，请求成功后，我们就使用sessionStorage为‘isLogin’保存一个值  1，如果请求失败，就不保存‘isLogin’的值
		//如果请求成功，num的值就是1，请求失败就是null，所以下面进行判断
		//如果登录了，就跳转到'/index'路径
		next();

	} else {
		//如果不需要登录权限就直接跳转到该路由
		next();
	}

})

// 导入compression-webpack-plugin
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 定义压缩文件类型
const productionGzipExtensions = ['js', 'css', 'png']

new Vue({
	router,
	store,
	render: h => h(App),
}).$mount('#app')

module.exports = {
		configureWebpack: {
			plugins: [
				new CompressionWebpackPlugin({
					asset: '[path].gz[query]', // 提示 compression-webpack-plugin@3.0.0的话asset改为filename
					algorithm: 'gzip',
					test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
					threshold: 10240,
					minRatio: 0.8
				})
			]
		},
	},
	Vue.config.productionTip = false;

// 设置请求拦截器
axios.interceptors.request.use(
	config => {
		// 从localStorage或者其他地方获取Token
		const token = localStorage.getItem('LZY-TOKEN');

		// 如果Token存在，将其添加到请求头
		if (token) {
			config.headers.Authorization = `Bearer ${token}`;
		}

		return config;
	},
	error => {
		return Promise.reject(error);
	}
);

// 将Axios添加到Vue的原型中，以便在组件中使用
Vue.prototype.$http = axios;

new Vue({
	render: h => h(App),
}).$mount('#app');